home *** CD-ROM | disk | FTP | other *** search
/ Network CD 2 / Network CD - Volume 2.iso / programs / internet / tcp / amitcp / amitcp-src-22.lha / AmiTCP-2.2 / src / l / inet-handler / readargs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-11-17  |  1.5 KB  |  71 lines

  1. /*
  2.  * readargs.c
  3.  *
  4.  * Author: Tomi Ollila <too@cs.hut.fi>
  5.  *
  6.  * Copyright (c) 1993 AmiTCP/IP Group, <amitcp-group@hut.fi>
  7.  *                    All rights reserved.
  8.  *
  9.  * Created: Fri Sep 24 15:10:32 1993 too
  10.  * Last modified: Sat Oct 16 16:57:31 1993 too
  11.  *
  12.  * $Id: readargs.c,v 1.1 1993/10/24 12:50:39 too Exp $
  13.  *
  14.  * HISTORY
  15.  * $Log: readargs.c,v $
  16.  * Revision 1.1  1993/10/24  12:50:39  too
  17.  * Initial revision
  18.  *
  19.  * Revision 1.1  1993/10/24  12:50:39  too
  20.  * Initial revision
  21.  *
  22.  */
  23.  
  24. #include <exec/types.h>
  25. #include <exec/memory.h>
  26. #include <dos/rdargs.h>
  27.  
  28. #if __GNUC__
  29. #include "inl_exec.h"
  30. #include "inl_dos.h"
  31. #elif __SASC
  32. #include <proto/exec.h>
  33. #include <proto/dos.h>
  34. #else
  35. #error compiler not currently supported.
  36. #endif
  37.  
  38. #include "readargs.h"
  39.  
  40. extern struct ExecBase *    SysBase;
  41. extern struct DosLibrary *    DOSBase;
  42.  
  43. struct readargs * readargs(char * template, int itemcount,
  44.                char *buffer, int buffersize)
  45. {
  46.   struct readargs * readargs;
  47.   LONG memsize;
  48.  
  49.   memsize = sizeof *readargs + itemcount * sizeof (LONG);
  50.   readargs = AllocMem(memsize, MEMF_PUBLIC|MEMF_CLEAR);
  51.  
  52.   if (readargs == NULL)
  53.     return NULL;
  54.  
  55.   readargs->ra_Private.RDA_Source.CS_Buffer = buffer;
  56.   readargs->ra_Private.RDA_Source.CS_Length = buffersize;
  57.   readargs->ra_Private2 = memsize;
  58.   
  59.   if (ReadArgs(template, readargs->ra_Args, &readargs->ra_Private) == NULL) {
  60.     FreeMem(readargs, memsize);
  61.     return NULL;
  62.   }
  63.   return readargs;
  64. }
  65.  
  66. void freeargs(struct readargs * rargs)
  67. {
  68.   FreeArgs(&rargs->ra_Private);
  69.   FreeMem(rargs, rargs->ra_Private2);
  70. }
  71.